/****************************************************************************************
 * 
 *  Author:         CFY
 *  Date:           2025-07-10
 *  Description:    共享内存工具类
 *  Version:        V1.2
 * 
****************************************************************************************/
#ifndef SHMEM_H
#define SHMEM_H

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>


// 定义一个有参宏，出错就会打印错误信息
#define ERROR(x) do{ \
 perror(x); \
 printf("%s-%s-%d\n", __FILE__, __func__, __LINE__); \
}while(0)

#define SHMEM_NAME          "shmem"
// 用来生成唯一Key值的路径
#define SHMEM_PATH          "/tmp/ipc/shmem/"
// 用来生成一个唯一Key值
#define SHMEM_PROJ_ID       's' 
// 共享内存的大小， 当前为1单位（4k）
#define SHMEM_SIZE          4096


// 共享内存信息结构体
struct shmem_param
{
    int key;                    // 共享内存唯一key值
    int id;                     // 共享内存ID
    size_t size;                // 共享内存大小
    void *addr;                 // 共享内存地址
};

// 初始化共享内存
int shmem_init(struct shmem_param *param, const char *name, size_t size);

// 删除共享内存
int shmem_del(struct shmem_param *param);

// 写入共享内存
int shmem_write(struct shmem_param *param, void *data, size_t size);

#endif
